package 中等.找规律;

/**
 * 给你一个字符串 word 和一个整数 numFriends。
 * Alice 正在为她的 numFriends 位朋友组织一个游戏。游戏分为多个回合，在每一回合中：
 * word 被分割成 numFriends 个 非空 字符串，且该分割方式与之前的任意回合所采用的都 不完全相同 。
 * 所有分割出的字符串都会被放入一个盒子中。
 * 在所有回合结束后，找出盒子中 字典序最大的 字符串
 *
 * @ https://leetcode.cn/problems/find-the-lexicographically-largest-string-from-the-box-i/description/?envType=daily-question&envId=2025-06-04
 * @date 2025/06/04
 */
public class 从盒子中找出字典序最大的字符串I_3403 {

    public static void main(String[] args) {

    }

    /**
     * 枚举左端点
     * 字符串越长，字典序越大
     * 需要分 numFriends 份字符串，那么最长的字符串长度为 word.length() - (numFriends - 1)
     */
    public String answerString(String word, int numFriends) {
        // 特例，不能分割
        if (numFriends == 1) {
            return word;
        }
        int len = word.length() - (numFriends - 1);
        String ans = word.substring(0, len);

        for (int left = 0; left < word.length(); left++) {
            int right = Math.min(word.length(), left + len);
            String cur = word.substring(left, right);
            if (ans.compareTo(cur) < 0) {
                ans = cur;
            }

        }
        return ans;

    }

}
